/**
 * @file app store
 * @author
 */

import http from '@/api';
import queryString from 'query-string';
const BACKEND_API_PREFIX = process.env.BK_BACKEND_API_PREFIX
export default {
  namespaced: true,
  state: {
  },
  mutations: {
  },
  actions: {
    getTableData(context, params, config = {}) {
      // eslint-disable-next-line no-undef
      return http.get(`/api/table?&${queryString.stringify(params)}`, params, config);
    },
    // 查询业务列表
    getBizData(context, params, config = {}) {
    // eslint-disable-next-line no-undef
      return http.get(BACKEND_API_PREFIX + `/biz-list`, params, config);
    },
    // 根据业务 ID，查询集群列表
    getSetData(context, params, config = {}) {
    // eslint-disable-next-line no-undef
      const url = BACKEND_API_PREFIX + `/set-list?${queryString.stringify(params)}`;
      return http.get(url, {}, config);
    },
    // 根据业务 ID 和集群 ID，查询模块列表
    getModuleData(context, params, config = {}) {
    // eslint-disable-next-line no-undef
      const url = BACKEND_API_PREFIX + `/module-list?${queryString.stringify(params)}`;
      return http.get(url, {}, config);
    },
    created() {
      this.init(); // 通过 created()勾子函数，执行初始化操作
    },
    init() {
    // 页面初始化时执行
      this.getBizData();
    },
    async getBizData() {
      try {
      // 初始化业务列表数据，渲染至 select 下拉选框
        const res = await 
        this.$store.dispatch('example/getBizData', {}, { fromCache: true });
        this.biz_list=res.data.info
      } catch (e) {
      console.error(e);
      }
    },
    async handleBizChange(newValue, oldValue) {
    console.log('切换了业务，业务 ID 为：',newValue)
    this.biz_id = newValue
    this.set_id = null // 每次切换业务 ID 后，需要重置此前的集群 ID和模块 ID
    this.module_id = null
    const set_res = await 
    this.$store.dispatch('example/getSetData',{"bk_biz_id":newValue},
    {fromCache:true})
    this.set_list = set_res.data.info
    },
    async handleSetChange(newValue, oldValue) {
    // 点击集群 ID 后，查询集群下所有模块，并回显至对应组件
    console.log('切换了集群，集群 ID 为：',newValue)
    this.set_id = newValue
    this.module_id = null // 切换集群后，需要重置此前的模块 ID
    const module_res = await 
    this.$store.dispatch('example/getModuleData',{"bk_biz_id":this.biz_id,"bk_set_id":this.set_id},{fromCache:true})
    this.module_list = module_res.data.info
    },
    async handleModuleChange(newValue, oldValue) {
    // 点击集群 ID 后，查询集群下所有模块，并回显至对应组件
    console.log('切换了模块，模块 ID 为：',newValue)
    this.module_id = newValue
    },
    async handleOperatorChange(value,event){
          try{
          console.log('维护人输入框，当前输入值为',value)
          this.operator = value
          }catch (e) {
          console.error(e)
          }
        },
    async handleBakOperatorChange(value,event){
      try{
      console.log('备份维护人输入框，当前输入值为',value)
      this.bak_operator = value
      }catch (e) {
      console.error(e)
      }
    },
    
    handlePageChange(page) {
    this.pagination.current = page;
    },
        // 根据传入的查询参数，查询主机列表
    getHostsData(context, params, config = {}) {
    // eslint-disable-next-line no-undef
    const url = BACKEND_API_PREFIX + `/host-list?${queryString.stringify(params)}`;
    return http.get(url, {}, config);
    },
    async getHostDetail(bk_host_id){
    console.log('查询主机详情信息,主机 ID：',bk_host_id)
    const host_res = await 
    this.$store.dispatch('example/getHostDetail',{"bk_host_id":bk_host_id},{fromCache:true})
    this.host_detail = host_res.data
    this.isSidesliderShow = true;
    },
    // 根据传入的主机 ID，查询主机详情信息
    getHostDetail(context, params, config = {}) {
    // eslint-disable-next-line no-undef
    const url = BACKEND_API_PREFIX + `/host-detail?${queryString.stringify(params)}`;
    return http.get(url, {}, config);
    },
    async searchHosts(){
    // TODO：可选优化项：进行参数校验，比如，部分参数为空的话，弹窗提示
    let query_data = {
      "bk_biz_id":this.biz_id
    }
    // 添加可选参数
    if (this.set_id) {
      query_data["bk_set_id"] = this.set_id;
    }
    // 添加可选参数
    if (this.module_id) {
      query_data["bk_module_id"] = this.module_id;
    }
    // 添加可选参数
    if (this.operator) {
    query_data["operator"] = this.operator;
    }
    // TODO:添加额外可选参数：主机 ID、主机 IP
    console.log('主机查询参数:',query_data)
    // 数据渲染至 bk-table
    const host_res = await 
    this.$store.dispatch('example/getHostsData',query_data,{fromCache
    :true})
    this.host_list = host_res.data.info
    // TODO：参照 bk-table 组件文档，实现分页操作
    },
  },
};
